home *** CD-ROM | disk | FTP | other *** search
/ Aminet 6 / Aminet 6 - June 1995.iso / Aminet / gfx / misc / CatMake124.lha / CatMake.rexx < prev    next >
Encoding:
OS/2 REXX Batch file  |  1995-02-13  |  46.5 KB  |  1,351 lines

  1. /***********************************/
  2. /* Make one or more catalog-pic(s) */
  3. /* written by Rodja Adolph in 1993 */
  4. /* SHAREWARE with 10$ fee          */
  5. /* Contact me under :              */
  6. /* EMail: ronnie@aworld.aworld.de  */
  7. /* Anything else is mentioned in   */
  8. /* the docfile you should already  */
  9. /* have read...                    */
  10. /*                                 */
  11. /* THIS text isnt the doc :)       */
  12. /***********************************/
  13. CALL TRACE("o")                   /* trace off */
  14. /* CALL TRACE("i") */
  15. CMVersion='V1.24'                 /* Version */
  16. NeedVersion='2.0'                 /* Configfile-Version needed at least */
  17.  
  18. WeLaunched=0
  19. Shuffle="NO"
  20. ArgHeader=0
  21. Debug=0
  22. MFRMode=0                          /* Set to 0 and try Multiselect of files  */
  23.                                    /* If it works then keep 0.If not and you */
  24.                                    /* DO have MFR in c:,then set to 1        */
  25.                                    /* Somehow obselete now...But still here..*/
  26.  
  27. PARSE ARG CatBase "," ERGo "," WildCard "," AHeader "," PrefsFile "," FileData
  28. IF CatBase~="" THEN DO
  29.  Arguments=1
  30.  useD=1
  31.  dum1=LASTPOS('/',CatBase)
  32.  ERGo=UPPER(ERGo)
  33.  IF dum1~=0 THEN thedir=LEFT(CatBase,dum1)
  34.             ELSE DO
  35.                   dum1=POS(':',CatBase)
  36.                   IF dum1~=0 THEN thedir=LEFT(CatBase,dum1)
  37.                              ELSE thedir='SYS:'
  38.                  END
  39.  dirm=UPPER(WORD(FileData,1))
  40.  FileData=DELWORD(FileData,1,1)
  41.  IF dirm="WHOLE" THEN thedir=FileData
  42.                  ELSE DO
  43.                        i="-1"
  44.                        DO WHILE INDEX(FileData,'"')~=0
  45.                         i=i+1
  46.                         PARSE VAR FileData '"' fl.i '"' FileData
  47.                        END
  48.                        fl.count=i+1
  49.                       END
  50.  IF AHeader~="" THEN DO
  51.   AddHeader="YES"
  52.   HeaderString=AHeader
  53.   ArgHeader=1
  54.  END
  55. END
  56. ELSE DO
  57.  Arguments=0
  58.  PrefsFile="ENVARC:CatMakeAdPro.prefs"
  59. END
  60.  
  61. IF ~SHOW('Ports','ADPro') THEN DO
  62.  SAY "Trying to run AdPro..."
  63.  IF ~OPEN(file,"T:LaunchAdPro.bat","W") THEN EXIT 20
  64.  CALL WRITELN(file,"Stack 4096")
  65.  CALL WRITELN(file,"RUN ADPro:ADPro")
  66.  CALL CLOSE(file)
  67.  ADDRESS COMMAND "Execute T:LaunchAdPro.bat"
  68.  ADDRESS COMMAND "Delete >NIL: T:LaunchAdPro.bat"
  69.  ADDRESS COMMAND "WaitForPort ADPro"
  70.  IF ~SHOW('Ports','ADPro') THEN DO
  71.   SAY "AdPro not found! EXITING!"
  72.   EXIT 20
  73.  END
  74.  ELSE WeLaunched=1
  75. END
  76.  
  77. ADDRESS "ADPro"                    /* Addressing Host */
  78. OPTIONS RESULTS
  79. SIGNAL ON BREAK_C                  /* Trap on errors and breaks */
  80. SIGNAL ON BREAK_D
  81. SIGNAL ON SYNTAX
  82.  
  83. WindowOpen=0
  84. NL='0a'x                           /* Newline-Code */
  85. LUP = '1b'x||'M'                   /* LineUp-Code for CON: */
  86. AddedHeader=0
  87. 24Bit=16777216                     /* Just for nicer textoutput */
  88. 8BitGrey="256G"
  89. DelList.0=0
  90. PPList.0=0
  91.  
  92. IF ~SHOW('Libraries','rexxsupport.library') THEN DO
  93.  IF ~ADDLIB('rexxsupport.library',0,-30,0) THEN CALL ERR("Couldn't allocate rexxsupport.library!"||NL||"File not found?!")
  94. END
  95.  
  96. IF ~SHOW('Libraries','rexxtricks.library') THEN DO
  97.  IF ~ADDLIB('rexxtricks.library',0,-30,0) THEN CALL ERR("Couldn't allocate rexxtricks.library!"||NL||"File not found?!")
  98. END
  99.  
  100. LFORMAT                            /* Get current Loader */
  101. OldLoader=adpro_result
  102.  
  103. SFORMAT                            /* Get current Saver */
  104. OldSaver=adpro_result
  105.  
  106. /*
  107. SCREEN_TYPE                        /* Get current Screentype */
  108. SType=adpro_result
  109. */
  110.  
  111. VERSION                            /* Check for version if ListViews possible */
  112. IF adpro_result>="ADPro 2.3.0" THEN Up2Date=1
  113.                                ELSE Up2Date=0
  114.  
  115. IF Up2Date THEN DO                 /* Build default Listview-Lists */
  116.  GETLIST Colors
  117.  PARSE VAR AdPro_Result '"' . '" ' ColorList
  118.  GETLIST Savers
  119.  PARSE VAR AdPro_Result '"' . '" ' SaverList
  120.  TileList='3x2 3x3 4x3 4x4 5x4 5x5 6x5 6x6 Custom Auto'
  121. END
  122.  
  123. IF OPEN(Prefs,PrefsFile,"R") THEN DO /* Check for PrefsFile */
  124.  PrefsVersion=SUBSTR(WORD(READLN(Prefs),2),2)
  125.  IF NeedVersion>PrefsVersion | "9.0"<PrefsVersion THEN DO
  126.   IF Shuffle="YES" THEN ADPRO_TO_FRONT                      /* Screen2Front */
  127.   OKAY2 'Prefs-File is not Up2Date !'||NL||' Version needed : '||NeedVersion||NL||' Version found  : '||PrefsVersion||NL||'Use the Built-In defaults?'
  128.   IF rc=0 THEN EXIT
  129.           ELSE DO
  130.                 zzz=CLOSE(Prefs)
  131.                 CALL SetDefs
  132.                END
  133.  END
  134.  DO i=1 TO 4
  135.   zzz=READLN(Prefs)
  136.  END
  137.  TextRender=UPPER(WORD(READLN(Prefs),3)) /* Load settings */
  138.  StripExt=UPPER(WORD(READLN(Prefs),3))
  139.  FName=WORD(READLN(Prefs),3)
  140.  FSize=WORD(READLN(Prefs),3)
  141.  FType=UPPER(WORD(READLN(Prefs),3))
  142.  TextR=WORD(READLN(Prefs),3)
  143.  TextG=WORD(READLN(Prefs),3)
  144.  TextB=WORD(READLN(Prefs),3)
  145.  Sizing=UPPER(WORD(READLN(Prefs),3))
  146.  F2Name=WORD(READLN(Prefs),3)
  147.  F2Size=WORD(READLN(Prefs),3)
  148.  F2Type=UPPER(WORD(READLN(Prefs),3))
  149.  SizeR=WORD(READLN(Prefs),3)
  150.  SizeG=WORD(READLN(Prefs),3)
  151.  SizeB=WORD(READLN(Prefs),3)
  152.  Seperate=UPPER(WORD(READLN(Prefs),3))
  153.  IF ArgHeader=0 THEN AddHeader=UPPER(WORD(READLN(Prefs),3))
  154.                 ELSE CALL READLN(Prefs)
  155.  HeaderName=WORD(READLN(Prefs),3)
  156.  HeaderSize=WORD(READLN(Prefs),3)
  157.  HeaderType=UPPER(WORD(READLN(Prefs),3))
  158.  HeaderEmbossDirection=UPPER(WORD(READLN(Prefs),3))
  159.  HeaderEmbossAmount=WORD(READLN(Prefs),3)
  160.  HeaderStyle=WORD(READLN(Prefs),3)
  161.  HeaderOffset=WORD(READLN(Prefs),3)
  162.  CenterHeader=UPPER(WORD(READLN(Prefs),3))
  163.  HeaderR=WORD(READLN(Prefs),3)
  164.  HeaderG=WORD(READLN(Prefs),3)
  165.  HeaderB=WORD(READLN(Prefs),3)
  166.  IF ArgHeader=0 THEN HeaderString=SUBSTR(READLN(Prefs),19)
  167.                 ELSE CALL READLN(Prefs)
  168.  zzz=READLN(Prefs)
  169.  zzz=READLN(Prefs)
  170.  IF ~Arguments THEN dirm=UPPER(WORD(READLN(Prefs),3))
  171.                ELSE zzz=READLN(Prefs)
  172.  Sorting=UPPER(WORD(READLN(Prefs),3))
  173.  SaveOnError=UPPER(WORD(READLN(Prefs),3))
  174.  ProcOnErr=UPPER(WORD(READLN(Prefs),3))
  175.  ProcOnStr=SUBSTR(READLN(Prefs),19)
  176.  CharStripping=UPPER(WORD(READLN(Prefs),3))
  177.  PARSE VAR CharStripping CharMain "+" CharExtension
  178.  TDir=SUBSTR(READLN(Prefs),19)
  179.  IF RIGHT(TDir,1)~=':' & RIGHT(TDir,1)~='/' THEN TDir=TDir||'/'
  180.  IF ~Arguments THEN WildCard=WORD(READLN(Prefs),3)
  181.                ELSE zzz=READLN(Prefs)
  182.  ExamineFiles=UPPER(WORD(READLN(Prefs),3))
  183.  ExamineNames=UPPER(WORD(READLN(Prefs),3))
  184.  Shuffle=UPPER(WORD(READLN(Prefs),3))
  185.  zzz=READLN(Prefs)
  186.  zzz=READLN(Prefs)
  187.  CatBasis=WORD(READLN(Prefs),3)
  188.  CatForm=UPPER(WORD(READLN(Prefs),3))
  189.  AddSaver=UPPER(WORD(READLN(Prefs),3))
  190.  CatMode=UPPER(WORD(READLN(Prefs),3))
  191.  Mode=UPPER(WORD(READLN(Prefs),3))
  192.  SizeMode=UPPER(WORD(READLN(Prefs),3))
  193.  Cols=WORD(READLN(Prefs),3)
  194.  PWI=WORD(READLN(Prefs),3)
  195.  PHE=WORD(READLN(Prefs),3)
  196.  PHEBack=PHE
  197.  TWI=WORD(READLN(Prefs),3)
  198.  THI=WORD(READLN(Prefs),3)
  199.  TMode=WORD(READLN(Prefs),3)
  200.  BorderR=WORD(READLN(Prefs),3)
  201.  BorderG=WORD(READLN(Prefs),3)
  202.  BorderB=WORD(READLN(Prefs),3)
  203.  MixFactor=WORD(READLN(Prefs),3)
  204.  MixR=WORD(READLN(Prefs),3)
  205.  MixG=WORD(READLN(Prefs),3)
  206.  MixB=WORD(READLN(Prefs),3)
  207.  Back1R=WORD(READLN(Prefs),3)
  208.  Back1G=WORD(READLN(Prefs),3)
  209.  Back1B=WORD(READLN(Prefs),3)
  210.  Back2R=WORD(READLN(Prefs),3)
  211.  Back2G=WORD(READLN(Prefs),3)
  212.  Back2B=WORD(READLN(Prefs),3)
  213.  Back3R=WORD(READLN(Prefs),3)
  214.  Back3G=WORD(READLN(Prefs),3)
  215.  Back3B=WORD(READLN(Prefs),3)
  216.  Back4R=WORD(READLN(Prefs),3)
  217.  Back4G=WORD(READLN(Prefs),3)
  218.  Back4B=WORD(READLN(Prefs),3)
  219.  Back2Pos=WORD(READLN(Prefs),3)
  220.  BackDir=UPPER(WORD(READLN(Prefs),3))
  221.  zzz=READLN(Prefs)
  222.  zzz=READLN(Prefs)
  223.  MakeAlt=UPPER(WORD(READLN(Prefs),3))
  224.  Colors=WORD(READLN(Prefs),3)
  225.  SForm=UPPER(WORD(READLN(Prefs),3))
  226.  SMode=UPPER(WORD(READLN(Prefs),3))
  227.  Extension=WORD(READLN(Prefs),3)
  228.  zzz=CLOSE(Prefs)
  229. END
  230. ELSE DO
  231.  zzz=CLOSE(Prefs)
  232.  CALL SetDefs                           /* No File -> defaults */
  233. END
  234.  
  235. MAIN:
  236.  
  237. TileList='"'||TMode||'" '||TileList /* Complete with TilingMode */
  238. IF FSize>F2Size THEN FSizeMax=FSize
  239.                 ELSE FSizeMax=F2Size
  240. IF Sizing="BOTTOM" THEN FSizeMax=FSize+F2Size+2
  241.  
  242.  
  243. IF ~Arguments THEN DO
  244.  IF Shuffle="YES" THEN ADPRO_TO_FRONT     /* Screen2Front */
  245.  OKAY2 'Do you want to use the'||NL||'   entire defaults?'||NL||'OK=Whole Cancel=Partial'
  246.  if rc=0 then useD=0
  247.          else useD=1
  248. END
  249.  
  250. IF useD=0 THEN CALL AskSettings          /* Ask for all the settings... */
  251.  
  252. IF ~Arguments THEN DO
  253.  /* Get files to work on */
  254.  fl.count=0                       /* FileNames-Array with fl.count holding the */
  255.                                     /* number of entries                         */
  256.  IF dirm='MULTI' THEN DO
  257.   IF MFRMode=1 THEN DO
  258.    /* Use MFR to select some files */
  259.    ADPRO_TO_BACK
  260.    ADDRESS COMMAND 'C:MFR >'||TDir||'Files TITLE="Select pictures to catalogize" MULTI'
  261.    IF ~OPEN(File,TDir||'Files','R') THEN CALL ERR('Couldnt open MFR-Output file!')
  262.    i="-1"
  263.    /* Read selected files from temporary file and add to FileList fl. */
  264.    DO WHILE ~EOF(file)
  265.     line=READLN(file)
  266.     IF LENGTH(line)=0 THEN LEAVE
  267.     i=i+1
  268.     fl.i=line
  269.     DO WHILE index(fl.i,"//")~=0
  270.      fl.i=DELSTR(fl.i,index(fl.i,"//"),1)
  271.     END
  272.    END
  273.    fl.count=i+1                       /* Store number of entries */
  274.    ab=CLOSE(file)
  275.    IF Shuffle="YES" THEN ADPRO_TO_FRONT
  276.    IF fl.count=0 THEN CALL ERR('No Files found')
  277.   END
  278.   ELSE DO
  279.    /* Use AdPro for multiselecting */
  280.    GETFILES '"Select pictures to catalogize"'
  281.    IF rc~=0 THEN CALL ERR('')
  282.    fltemp=adpro_result /* Long string with filenames like "a" "b" "c" */
  283.    IF WORDS(fltemp)=1 THEN fltemp='"'||fltemp||'"'
  284.    i="-1"
  285.    DO WHILE INDEX(fltemp,'"')~=0 /* Repeat until no " can be found */
  286.     i=i+1
  287.     /* Get the next filename out of fltemp and also remove it from fltemp afterwards */
  288.     PARSE VAR fltemp '"' fl.i '"' fltemp
  289.    END
  290.    fl.count=i
  291.    IF Shuffle="YES" THEN ADPRO_TO_FRONT
  292.    IF fl.count=0 THEN CALL ERR('No Files found')
  293.   END
  294.   thedir=PATHPART(fl.0)
  295.   IF thedir="" THEN thedir='SYS:'
  296.  END
  297. END
  298.  
  299. IF dirm="WHOLE" THEN DO
  300.  /* Whole-Dir-Mode */
  301.  IF ~Arguments THEN DO
  302.   GETDIR "'Work on which dir?'"
  303.   IF rc~=0 THEN CALL ERR('')
  304.   thedir=adpro_result               /* Our working-directory */
  305.  END
  306.  
  307.  IF RIGHT(thedir,1)~=':' & RIGHT(thedir,1)~='/' THEN thedir=thedir||'/'
  308.  
  309.  /* Get a filelist with # seperators like a#b#c */
  310.  fltemp=SHOWDIR(thedir,'File','#')
  311.  IF ~Arguments & Shuffle="YES" THEN ADPRO_TO_FRONT /* Perhaps some Reqpatcher sent us to front */
  312.  IF fltemp='' THEN CALL err('No files found!')
  313.  i=0
  314.  /* Get actual files */
  315.  DO WHILE INDEX(fltemp,'#')~=0
  316.   fl.i=LEFT(fltemp,INDEX(fltemp,'#')-1)
  317.   fltemp=DELSTR(fltemp,1,INDEX(fltemp,'#'))
  318.   i=i+1
  319.  END
  320.  fl.i=fltemp /* We still have one filename in fltemp */
  321.  fl.count=i
  322. END
  323.  
  324. IF ~Arguments THEN DO
  325.  /* Wildcard-Queries */
  326.  OKAY2 'Do you want to use a wildcard to filter files?'
  327.  IF rc=0 THEN Wildcard='OFF'
  328.          ELSE DO
  329.                GETSTRING '"Enter wildcard (use 1-2 * and perhaps a ~)"' Wildcard
  330.                IF rc~=0 THEN CALL ERR('')
  331.                Wildcard=ADPro_Result
  332.                IF INDEX(Wildcard,"*")=0 THEN Wildcard="*"
  333.               END
  334. END
  335.  
  336. /* Sorting-Mode */
  337. IF ~UseD & Up2Date THEN DO
  338.  IF Sorting="ALPHA" THEN DO
  339.                           OKS="Custom"
  340.                           OKS2="CUSTOM"
  341.                           CANS="Alpha"
  342.                           CANS2="ALPHA"
  343.                          END
  344.                     ELSE DO
  345.                           OKS="Alpha "
  346.                           OKS2="ALPHA"
  347.                           CANS="Custom"
  348.                           CANS2="CUSTOM"
  349.                          END
  350.  OKAY2 '"Use alphabetical or custom sorting?'||NL||'    OK='||OKS||'      Cancel='||CANS||'"'
  351.  IF rc=0 THEN Sorting=CANS2
  352.          ELSE Sorting=OKS2
  353. END
  354. IF ~Up2Date THEN Sorting="ALPHA"
  355.  
  356. IF LEFT(TheDir,1)='"' THEN TheDir=DELSTR(TheDir,1,1)
  357.  
  358. IF ~Arguments THEN DO
  359.  /* Get basename for catalogs */
  360.  GETFILE "'Enter CatalogBaseName'" '"'||TheDir||'"' CatBasis
  361.  IF rc~=0 THEN CALL ERR('')
  362.  CatBase=ADPro_Result
  363. END
  364.  
  365. /* Get path+name seperately for catalogs */
  366.  CatBasis=FILEPART(CatBase)
  367.  IF CatBasis="" THEN CatBasis='_Catalog.'
  368.  CatDir=PATHPART(CatBase)
  369.  IF CatDir="" THEN CatDir="SYS:"
  370.  
  371. /* Apply Wildcard */
  372. IF Wildcard~="OFF" & Wildcard~="*" & Wildcard~="#?" & fl.count>0 & fl.count~="FL.COUNT" THEN DO
  373.  Fl0Back=fl.count
  374.  DO i=0 TO fl.count
  375.   IF ~MATCHPATTERN(fl.i,Wildcard) THEN DO            /* Remove entry */
  376.    IF fl.count>i THEN DO
  377.     DO j=i TO fl.count-1
  378.      k=j+1
  379.      fl.j=fl.k
  380.     END
  381.    END
  382.    fl.count=fl.count-1
  383.    i=i-1
  384.   END
  385.   IF i>=fl.count THEN LEAVE i
  386.  END
  387.  SAY "Removed "||Fl0Back-fl.count||" entries due to wildcarding"
  388. END
  389.  
  390. IF fl.count="-1" THEN DO
  391.  IF ~arguments THEN CALL ERR("No files left after wildcarding!")
  392.  EXIT 5
  393. END
  394.  
  395. /* Now possibly check for archives...*/
  396. DO i=0 TO fl.count
  397.  IF dirm='MULTI' THEN flcat=fl.i
  398.                  ELSE flcat=thedir||fl.i
  399.  IF ExamineNames="YES" | ExamineFiles="YES" THEN DO  /* Check for LhA/Lzh/pp files */
  400.   SELECT
  401.    WHEN ExamineNames="YES" & (UPPER(RIGHT(flcat,4))=".LZH" | UPPER(RIGHT(flcat,4))=".LHA") THEN DO
  402.     flcat=UnPack("LHA",flcat,thedir)
  403.     IF dirm='MULTI' THEN fl.i=thedir||flcat
  404.                     ELSE fl.i=flcat
  405.    END
  406.    WHEN ExamineNames="YES" & UPPER(RIGHT(flcat,3))=".PP" THEN CALL UnPack("PP",flcat,thedir)
  407.    WHEN ExamineFiles="YES" & ExamineFile(flcat)="LHA" THEN DO
  408.     flcat=UnPack("LHA",flcat,thedir)
  409.     IF dirm='MULTI' THEN fl.i=thedir||flcat
  410.                     ELSE fl.i=flcat
  411.    END
  412.    WHEN ExamineFiles="YES" & ExamineFile(flcat)="PP" THEN CALL UnPack("PP",flcat,thedir)
  413.    OTHERWISE NOP
  414.   END
  415.  END
  416. END
  417.  
  418. /* Now sort the filelist */
  419. IF fl.count>1 THEN DO
  420.  fl.count=fl.count+1
  421.  zz=QSORT("fl")
  422.  fl.count=fl.count-1
  423. END
  424.  
  425. /* Now checking if catalogs exist in the catalogdir and ask what to do */
  426. /* Catalogs are identified from the current basename...                */
  427.  IF ~Arguments THEN DO
  428.   AlreadyAsked=0
  429.   OverFlag=1
  430.   CAPFL=SHOWDIR(CatDir,'File')
  431.   IF WORDS(CAPFL)>0 THEN DO
  432.    DO i=1 TO WORDS(CAPFL)
  433.     zzz=WORD(CAPFL,i)
  434.     IF UPPER(LEFT(zzz,LENGTH(catbasis)))=UPPER(catbasis) THEN zFlag=1
  435.                                                          ELSE zFlag=0
  436.     IF zFlag THEN DO
  437.      /* Found existing catalog */
  438.      IF ~AlreadyAsked & zFlag THEN DO
  439.       OKAY2 '"   Overwrite or rename'||NL||'    existing catalog ?'||NL||'OK=Overwrite Cancel=Rename"'
  440.       OverFlag=rc
  441.       AlreadyAsked=1
  442.      END
  443.      IF RIGHT(catdir,1)~=":" & RIGHT(catdir,1)~="/" THEN zzz="/"||zzz
  444.      IF ~OverFlag THEN ADDRESS COMMAND 'rename "'||catdir||zzz||'" "'||catdir||zzz||'.bak"'
  445.     END
  446.    END
  447.   END
  448.  END
  449.  IF RIGHT(catdir,1)~=":" & RIGHT(catdir,1)~="/" THEN dira=catdir||"/"
  450.                                                 ELSE dira=catdir
  451.  IF RIGHT(thedir,1)~=":" & RIGHT(thedir,1)~="/" THEN dirb=thedir||"/"
  452.                                                 ELSE dirb=thedir
  453.  IF dira=dirb THEN DO
  454.   /* We must also delete this entry from the FileList */
  455.   DO j=0 TO fl.count
  456.     IF INDEX(fl.j,catbasis)~=0 THEN DO                 /* Delete entry */
  457.                                      IF fl.count>j THEN DO
  458.                                       DO k=j TO fl.count-1
  459.                                        l=k+1
  460.                                        fl.k=fl.l
  461.                                       END
  462.                                       j=j-1
  463.                                      END
  464.                                      fl.count=fl.count-1
  465.                                     END
  466.   END
  467.  END
  468.  
  469. /* The Listview for the tiling */
  470. IF Up2Date | Arguments THEN DO
  471.  IF ~Arguments THEN DO
  472.   ListView '"Tiling for '||fl.count+1||' pics"' 10 ITEMS TileList
  473.   IF rc>1 THEN CALL ERR('')
  474.   PARSE VAR adpro_result '"' ERGo '"' .
  475.  END
  476.  ERGo=UPPER(ERGo)
  477.  IF ERGo~='AUTO' & ERGo~='CUSTOM' THEN PARSE VAR ERGo TWI 'X' THI .
  478.  ELSE DO
  479.   IF ERGo='CUSTOM' THEN CALL QueryTiling
  480.   IF ERGo='AUTO' THEN DO
  481.    /* Automode to fit all pics on one catalog */
  482.    TWI=0
  483.    THI=0
  484.    dum1=1
  485.    DO UNTIL TWI*THI>=fl.count+1
  486.     IF dum1 THEN DO
  487.                   TWI=TWI+1
  488.                   dum1=0
  489.                  END
  490.             ELSE DO
  491.                   THI=THI+1
  492.                   dum1=1
  493.                  END
  494.    END
  495.   END
  496.  END
  497. END
  498. ELSE CALL QueryTiling
  499.  
  500. /* Size of each tile in pixels */
  501. IF AddHeader='YES' THEN PHE=PHE-HeaderSize-2
  502. TWID=TRUNC((PWI-TWI-1)/TWI)
  503. THEI=TRUNC((PHE-THI-1)/THI)
  504.  
  505. /* Perhaps do a custom-sorting now */
  506. IF Sorting='CUSTOM' & Up2Date THEN DO
  507.  FLA=''
  508.  DO i=0 to fl.count
  509.   FLA=FLA||'"'||FILEPART(fl.i)||'" '
  510.  END
  511.  /* FLA holds now all filenames (NO paths!) in quotes */
  512.  i=0
  513.  FLABack=FLA
  514.  DO UNTIL WORDS(FLABack)=1
  515.   ListView '"Next in custom order?"' 10 ITEMS FString||' '||FLABack
  516.   IF rc>1 THEN CALL ERR('Cancelled by user')
  517.   PARSE VAR adpro_result '"' ERG '"' .
  518.   idc=FIND(FLA,'"'||ERG||'"')
  519.   idc2=FIND(FLABack,'"'||ERG||'"')
  520.   IF idc=0 THEN CALL ERR('Internal Error -5')
  521.   i=i+1
  522.   flb.i=fl.idc
  523.   FLABack=DELWORD(FLABack,idc2,WORDS(ERG))
  524.  END
  525.  i=i+1
  526.  idc=FIND(FLA,SUBWORD(FLABack,1,WORDS(FLABack)))
  527.  flb.i=fl.idc
  528.  DO i=0 to fl.count
  529.   fl.i=flb.i
  530.  END
  531. END
  532. ELSE DO
  533.  IF Sorting='CUSTOM' & ~Up2Date THEN OKAY1 'Custom sorting needs AdPro >=2.30 !'
  534. END
  535.  
  536. cats=1    /* Number of catalogs */
  537. k=0
  538.  
  539. /* Setup catalogs with whole filenames (incl. path) */
  540. IF fl.count=0 THEN CALL ERR('No files found to catalogize ?!')
  541. DO i=0 TO fl.count
  542.   k=k+1
  543.   IF dirm='MULTI' THEN cat.cats.k=fl.i
  544.                   ELSE cat.cats.k=thedir||fl.i
  545.   cat.cats.0=k
  546.   IF k=TWI*THI THEN DO
  547.                      k=0
  548.                      cats=cats+1
  549.                      cat.cats.0=0
  550.                     END
  551. END
  552.  
  553. IF cat.cats.0=0 THEN cats=cats-1
  554.  
  555. /* First text-output... */
  556. IF ~Arguments THEN ADPRO_TO_BACK
  557. /* Arrange a grammar-correct string ;-) */
  558. IF cats>1 THEN dum1='s each'
  559.           ELSE dum1=''
  560. IF cat.1.0>1 THEN dum2='s'
  561.              ELSE dum2=''
  562. /* Open window for Text-Output with special Window-Header */
  563. IF ~open(CON,'con:15/15/500/200/CatMake '||CMVersion||' : Processing '||cats||' catalog'||dum1||' with '||cat.1.0||' tile'||dum2||'!/SCREEN ADPro','W') THEN CALL ERR('Error opening output-window!')
  564. WindowOpen=1
  565.  
  566. /* abc serves as dummy variable... */
  567. zzz=WriteLn(CON,'')
  568. zzz=WriteLn(CON,'')
  569. DO i=1 TO cats                       /********** Make catalog(s) **********/
  570.  reallyloaded=0
  571.  LFORMAT 'UNIVERSAL'
  572.  SFORMAT 'IFF'
  573.  zzz=WriteLn(CON,LUP||'                                                                       ')
  574.  zzz=WriteLn(CON,LUP||'Processing catalog #'||i||copies(' ',length(cats)-length(i))||' :')
  575.  zzz=WriteLn(CON,'')
  576.  DO j=1 TO cat.i.0                   /* Make thumbnails */
  577.   zzz=WriteLn(CON,LUP||'                                                                       ')
  578.   TXString.j=FILEPART(cat.i.j)
  579.   dum1= cat.1.0*(cats-i-1)
  580.   IF cats-i<2 THEN dum1=0
  581.   CatToGo=cat.i.0-j + cat.cats.0 + dum1
  582.   IF i=cats THEN CatToGo=cat.i.0-j
  583.   IF CatToGo=0 THEN CatToGo="finished)"
  584.                ELSE CatToGo=RIGHT(CatToGo,LENGTH(cats*cat.1.0))||" to go)"
  585.  
  586.   zzz=WriteLn(CON,LUP||' Processing entry #'||j||RIGHT('',LENGTH(cat.i.0))||' (then '||CatToGo||' : '||TXString.j)
  587.   zzz=WriteLn(CON,'                                                                       ')
  588.   zzz=WriteLn(CON,LUP||'  Loading...')
  589.   ADDRESS REXX "REXX:CatMakePrePicLoad.rexx" cat.i.j
  590.   LOAD '"'||cat.i.j||'"'
  591.   rca=rc
  592.   ADDRESS REXX "REXX:CatMakePostPicLoad.rexx" cat.i.j
  593.   IF rca=0 | (rca~=0 & ProcOnErr='YES') THEN DO
  594.    ActWid=TWID
  595.    ActHei=THEI
  596.    IF Seperate='YES' & TextRender="YES" THEN XScale=FSizeMax
  597.                                         ELSE XScale=0
  598.    IF rca~=0 THEN DO                 /* Create error-pic */
  599.     LFORMAT 'BACKDROP'
  600.     IF mode="COLOR" THEN LOAD "X" TWID THEI-XScale "COLOR" Back1R Back1G Back1B Back2R Back2G Back2B Back3R Back3G Back3B Back4R Back4G Back4B
  601.                     ELSE LOAD "X" TWID THEI-XScale "GRAY" Back1R Back1G Back1B Back2R Back2G Back2B Back3R Back3G Back3B Back4R Back4G Back4B
  602.     Operator "TEXT_VISUAL" FONT_TYPE HeaderType FONT_NAME HeaderName SET_FONT_SIZE HeaderSize RENDER_TYPE MIX SET_EMBOSS HeaderEmbossAmount,
  603.                            EMBOSS_DIRECTION HeaderEmbossDirection SET_TEXT_STYLE HeaderStyle SET_BLUR '-1' SET_COLORS HeaderR HeaderG HeaderB,
  604.                            SET_SATURATION 100 SET_TEXT_STYLE 0 SET_TINT 0 SET_TRACKING 0 SET_RENDER 100,
  605.                            STRING '"'||ProcOnStr||'"' TEXT_HANDLE LEFT CENTER_XOFFSET CENTER_YOFFSET DRAW
  606.     LFORMAT 'UNIVERSAL'
  607.    END
  608.    XSIZE
  609.    XSz.j=adpro_result
  610.    YSIZE
  611.    YSz.j=adpro_result
  612.    IMAGE_TYPE
  613.    IType=AdPro_Result
  614.    IF INDEX(IType,'BITPLANE')~=0 THEN DO
  615.     RENDER_TYPE
  616.     rest=AdPro_Result
  617.     IF AdPro_Result~='EHB' & AdPro_Result~='HAM' & AdPro_Result~='CUST' & AdPro_Result~='HAM8' THEN DO
  618.      CDepth=0
  619.      DO UNTIL rest=1
  620.       CDepth=CDepth+1
  621.       rest=rest/2
  622.      END
  623.     END
  624.     ELSE CDepth=rest
  625.    END
  626.    ELSE DO
  627.     IF INDEX(IType,'COLOR')~=0 THEN CDepth=24
  628.                                ELSE CDepth='8BW'
  629.    END
  630.    ColorDepth.j=CDepth
  631.    IF INDEX(IType,'COLOR')=0 & INDEX(IType,'GRAY')=0 THEN DO
  632.    zzz=WriteLn(CON,LUP||'  Converting to RAW-Data...')
  633.     OPERATOR 'RENDER_TO_RAW'
  634.     IF rc~=0 THEN CALL ERR('Error while rendering'||NL||'to Raw (not enough mem?)')
  635.    END
  636.    IF MakeAlt='YES' THEN DO                /* Convert to alternate image */
  637.     bb=''
  638.     zzz=WriteLn(CON,LUP||'  Building alternate representation...')
  639.     ADDRESS REXX "REXX:CatMakePreAltProcess.rexx"
  640.     IF upper(SMode)~='RAW' THEN DO
  641.      zzz=WriteLn(CON,'                                                                       ')
  642.      zzz=WriteLn(CON,LUP||'   Rendering to '||Colors||' colors...')
  643.      render_type Colors
  644.      /*SCREEN_TYPE SType*/
  645.      execute
  646.      bb=LUP
  647.     END
  648.  
  649.     IF LEFT(Extension,1)='.' THEN Extension=SUBSTR(Extension,2)
  650.     IF INDEX(cat.i.j,'.')~=0 THEN fileo=LEFT(cat.i.j,LASTPOS('.',cat.i.j))||Extension
  651.                              ELSE fileo=cat.i.j||'.'||Extension
  652.     zzz=WRITELN(CON,bb||'                                                                       ')
  653.     zzz=WRITELN(CON,LUP||'   Saving alternate image as '||SForm||'...')
  654.     SFORMAT SForm
  655.     SAVE '"'||fileo||'"' SMode
  656.     IF rc~=0 THEN DO
  657.      okay1 'Error while saving'||NL||'alternate image as :'||fileo
  658.     END
  659.     SFORMAT IFF
  660.     zzz=WriteLn(CON,LUP||'                                                                    ')
  661.     zzz=WriteLn(CON,LUP||LUP||'                                                                    ')
  662.     zzz=WriteLn(CON,LUP)
  663.    END
  664.  
  665.    IF SizeMode='ABSOLUTE' THEN DO
  666.                                 zzz=WriteLn(CON,LUP||'                                                                       ')
  667.                                 zzz=WriteLn(CON,LUP||'  Scaling to '||TWID||' x '||THEI||'...')
  668.                                 ABS_SCALE ActWid ActHei-XScale
  669.                                END
  670.                           ELSE DO
  671.                                 zzz=WriteLn(CON,LUP||'                                                                       ')
  672.                                 IF Seperate='YES' THEN THII=THEI-XScale
  673.                                                   ELSE THII=THEI
  674.                                 PctA=XSz.j/TWID
  675.                                 IF YSz.j/PctA>THII THEN DO
  676.                                  PctA=YSz.j/THII
  677.                                 END
  678.                                 NewX=TRUNC(XSz.j/PctA)
  679.                                 NewY=TRUNC(YSz.j/PctA)
  680.                                 zzz=WriteLn(CON,LUP||'  Scaling to '||NewX||' x '||NewY||'...')
  681.                                 ABS_SCALE NewX NewY
  682.                                 ActWid=NewX
  683.                                 ActHei=NewY
  684.                                END
  685.    zzz=WriteLn(CON,LUP||'                                                                       ')
  686.    zzz=WriteLn(CON,LUP||'  Adding Textline...')
  687.  
  688.    image_type
  689.    IF INDEX(adpro_result,'GRAY')~=0 & Mode~="BLACKWHITE" THEN OPERATOR "GRAY_TO_COLOR"
  690.                                                          ELSE IF Mode="BLACKWHITE" THEN OPERATOR "COLOR_TO_GRAY" 3333 3334 3333
  691.  
  692.    zzz=WriteLn(CON,LUP||'                                                                       ')
  693.    zzz=WriteLn(CON,LUP||'  Saving temporary thumbnail...')
  694.    SAVE TDir||'CAT.'||j RAW
  695.    if j>1 THEN XtraString=NL||'       Volume full ?!'
  696.           ELSE XtraString=NL||'TempDir-Path incorrect ?!'
  697.    if rc~=0 then CALL ERR('Error while saving'||NL||'temporary thumbnail!'||XtraString)
  698.    if j<cat.i.0 then zzz=WriteLn(CON,LUP||LUP)
  699.    reallyloaded=reallyloaded+1
  700.   end
  701.   else reallyloaded=reallyloaded-1
  702.  end
  703.  
  704.  IF reallyloaded>0 THEN DO
  705.   zzz=WriteLn(CON,LUP||'                                                                       ')
  706.   zzz=WriteLn(CON,LUP||LUP||'                                                                       ')
  707.   zzz=WriteLn(CON,LUP||' Creating blank catalog...')
  708.   LFORMAT "BACKDROP"
  709.   IF Mode="BLACKWHITE" THEN LOAD "X" PWI PHE "GRAY" Back1R Back1G Back1B Back2R Back2G Back2B Back3R Back3G Back3B Back4R Back4G Back4B
  710.                        ELSE LOAD "X" PWI PHE "COLOR" Back1R Back1G Back1B Back2R Back2G Back2B Back3R Back3G Back3B Back4R Back4G Back4B
  711.   IF rc=10 THEN CALL ERR('"   Error while creating'||NL||'    catalog backdrop !'||NL||'(Probably not enough mem)"')
  712.  
  713.   LFORMAT 'IFF'
  714.  
  715.   LST=' '
  716.   DO j=1 to THI-1                     /* The wrapped tiles...*/
  717.    LST=LST||TWI*j+1||' '
  718.   END
  719.  
  720.   cx=1
  721.   cy=1
  722.   zzz=WriteLn(CON,LUP||'                                                                        ')
  723.   IF cat.i.0>1 THEN dum1='ies'
  724.                ELSE dum1='y'
  725.   zzz=WriteLn(CON,LUP||' Composing '||cat.i.0||' entr'||dum1||'...')
  726.   zzz=WriteLn(CON,'')
  727.   DO j=1 TO cat.i.0                   /* Compose thumbnails */
  728.    IF INDEX(LST,' '||j||' ')~=0 THEN DO
  729.                       cy=cy+THEI+1
  730.                       cx=1
  731.                      END
  732.    filename=TDir||'CAT.'||j
  733.    zzz=WriteLn(CON,LUP||'                                                                       ')
  734.    zzz=WriteLn(CON,LUP||'  Loading a thumbnail...')
  735.    IF debug=1 THEN DO
  736.     SAY "    @729 : LOAD "||filename||" "||cx||" "||cy||" 100"
  737.     SAY "           i="||i||"  j="||j
  738.    END
  739.    LOAD filename cx cy 100
  740.    IF rc=10 THEN CALL ERR('Error while loading'||NL||'temporary thumbnail !'||NL||'(Whereas saving was succesful)')
  741.    cx=cx+TWID+1
  742.   END
  743.  
  744. /*  if mode='BLACKWHITE' then OPERATOR "COLOR_TO_GRAY"  */
  745.   zzz=WriteLn(CON,LUP||'                                                                       ')
  746.   zzz=WriteLn(CON,LUP||'  Drawing rectangles and texts...')
  747.   k=0
  748.  
  749.   /* Draw some rectangles and text */
  750.   DO y=1 to THI
  751.    IF (y-1)*(THEI+1)+THEI+2>=PHE THEN a=PHE-(y-1)*(THEI+1)-1
  752.                                  ELSE a=THEI+2
  753.    IF TextRender="YES" THEN DO
  754.     IF Seperate="YES" THEN Operator "RECTANGLE" 0 y*(THEI+1)-FSizeMax-1 (TWI-1)*(TWID+1)+TWID+2 FSizeMax+2 1 BorderR BorderG BorderB
  755.                       ELSE Operator "RECTANGLE" 0 y*(THEI+1)-FSizeMax (TWI-1)*(TWID+1)+TWID+2 FSizeMax "-1" MixR MixG MixB MixFactor
  756.    END
  757.    DO x=1 to TWI
  758.     IF (x-1)*(TWID+1)+TWID+2>=PWI THEN b=PWI-(x-1)*(TWID+1)-1
  759.                                   ELSE b=TWID+2
  760.     k=k+1
  761.     IF cat.i.0>=k THEN DO
  762.      IF TextRender="YES" THEN DO
  763.       /* Render the textstrings */
  764.       TXStr=TXString.k
  765.       IF StripExt="YES" THEN DO
  766.                               IF LASTPOS(".",TXStr)~=0 THEN TXStr=LEFT(TXStr,LASTPOS(".",TXStr)-1)
  767.                              END
  768.       IF Sizing="BOTTOM" THEN ExtraSize=F2Size+2
  769.                          ELSE ExtraSize=0
  770.       Operator "TEXT_VISUAL" FONT_TYPE FType FONT_NAME FName SET_FONT_SIZE FSize RENDER_TYPE MIX,
  771.                              EMBOSS_DIRECTION OFF SET_TEXT_STYLE 0 SET_BLUR '-1' SET_COLORS TextR TextG TextB,
  772.                              SET_SATURATION 100 SET_TEXT_STYLE 0 SET_TINT 0 SET_TRACKING 0 SET_RENDER 100,
  773.                              STRING '"'||TXStr||'"' TEXT_HANDLE LEFT SET_XOFFSET (x-1)*(TWID+1)+5 SET_YOFFSET y*(THEI+1)-FSize-ExtraSize DRAW
  774.       IF Sizing='YES' | Sizing='RIGHT' | Sizing="BOTTOM" THEN DO
  775.        TX2Str=XSz.k||'x'||YSz.k||'x'||ColorDepth.k
  776.        IF Sizing='YES' | Sizing='RIGHT' THEN DO
  777.         Operator "TEXT_VISUAL" FONT_TYPE F2Type FONT_NAME F2Name SET_FONT_SIZE F2Size RENDER_TYPE MIX,
  778.                                EMBOSS_DIRECTION OFF SET_TEXT_STYLE 0 SET_BLUR '-1' SET_COLORS SizeR SizeG SizeB,
  779.                                SET_SATURATION 100 SET_TEXT_STYLE 0 SET_TINT 0 SET_TRACKING 0 SET_RENDER 100,
  780.                                STRING TX2Str TEXT_HANDLE RIGHT SET_XOFFSET x*(TWID+1)-5 SET_YOFFSET y*(THEI+1)-F2Size DRAW
  781.        END
  782.        ELSE DO
  783.         Operator "TEXT_VISUAL" FONT_TYPE F2Type FONT_NAME F2Name SET_FONT_SIZE F2Size RENDER_TYPE MIX,
  784.                                EMBOSS_DIRECTION OFF SET_TEXT_STYLE 0 SET_BLUR '-1' SET_COLORS SizeR SizeG SizeB,
  785.                                SET_SATURATION 100 SET_TEXT_STYLE 0 SET_TINT 0 SET_TRACKING 0 SET_RENDER 100,
  786.                                STRING TX2Str TEXT_HANDLE LEFT SET_XOFFSET (x-1)*(TWID+1)+5 SET_YOFFSET y*(THEI+1)-F2Size DRAW
  787.        END
  788.       END
  789.      END
  790.     END
  791.    END
  792.    /* Horizontal rectangles */
  793.    OPERATOR "RECTANGLE" 0 (y-1)*(THEI+1) (TWI-1)*(TWID+1)+TWID+2 a 1 BorderR BorderG BorderB
  794.   END
  795.   /* Vertical rectangles */
  796.   DO x=1 to TWI
  797.    IF (x-1)*(TWID+1)+TWID+2>=PWI THEN b=PWI-(x-1)*(TWID+1)-1
  798.                                  ELSE b=TWID+2
  799.    OPERATOR "RECTANGLE" (x-1)*(TWID+1) 0 b (THI-1)*(THEI+1)+THEI+2 1 BorderR BorderG BorderB
  800.   END
  801. /*      Operator "RECTANGLE" (x-1)*(TWID+1)+3 y*(THEI+1)-FSizeMax b-6 FSizeMax "-1" MixR MixG MixB MixFactor
  802.       IF Seperate="YES" THEN Operator "RECTANGLE" (x-1)*(TWID+1) y*(THEI+1)-FSizeMax-1 b FSizeMax+2 1 BorderR BorderG BorderB
  803. */
  804.  
  805.   IF AddHeader='YES' THEN DO
  806.    result=SETCLIP('CatMakeHeader',HeaderString)
  807.    ADDRESS REXX "REXX:CatMakePreAddheader.rexx" i
  808.    HeaderString=GETCLIP('CatMakeHeader')
  809.    result=SETCLIP('CatMakeHeader')
  810.    AddedHeader=1
  811.    SFORMAT "IFF"
  812.    SAVE TDir||"CatMake.Catalog.TMP" RAW
  813.    LFORMAT "BACKDROP"
  814.    IF mode="COLOR" THEN LOAD "X" PWI PHEBack "COLOR" Back1R Back1G Back1B Back2R Back2G Back2B Back3R Back3G Back3B Back4R Back4G Back4B
  815.                    ELSE LOAD "X" PWI PHEBack "GRAY" Back1R Back1G Back1B Back2R Back2G Back2B Back3R Back3G Back3B Back4R Back4G Back4B
  816.    LFORMAT "IFF"
  817.    LOAD TDir||"CatMake.Catalog.TMP" 0 HeaderSize+2 100
  818.    IF CenterHeader="YES" THEN CString='CENTER_XOFFSET'
  819.                          ELSE CString=''
  820.    Operator "TEXT_VISUAL" FONT_TYPE HeaderType FONT_NAME HeaderName SET_FONT_SIZE HeaderSize RENDER_TYPE MIX SET_EMBOSS HeaderEmbossAmount,
  821.                           EMBOSS_DIRECTION HeaderEmbossDirection SET_TEXT_STYLE HeaderStyle SET_BLUR '-1' SET_COLORS HeaderR HeaderG HeaderB,
  822.                           SET_SATURATION 100 SET_TEXT_STYLE 0 SET_TINT 0 SET_TRACKING 0 SET_RENDER 100,
  823.                           STRING '"'||HeaderString||'"' TEXT_HANDLE LEFT SET_XOFFSET HeaderOffset SET_YOFFSET 2 CString DRAW
  824.    OPERATOR "RECTANGLE" 0 0 (x-2)*(TWID+1)+b HeaderSize+3 1 BorderR BorderG BorderB
  825.    ADDRESS COMMAND "C:Delete >NIL: "||TDir||"CatMake.Catalog.TMP"
  826.   END
  827.   zzz=WriteLn(CON,LUP||'                                                                       ')
  828.   if CatMode~='RAW' then do
  829.    zzz=WriteLn(CON,LUP||'  Rendering catalog...')
  830.    RENDER_TYPE Cols
  831.    /*SCREEN_TYPE SType*/
  832.    ADDRESS REXX "REXX:CatMakePreCatRender.rexx" i
  833.    EXECUTE
  834.    zzz=WriteLn(CON,LUP||'                                                                       ')
  835.   end
  836.   zzz=WriteLn(CON,LUP||'  Saving catalog as '||CatForm||' under '||FILEPART(CatBase)||i||'...')
  837.   SFORMAT CatForm
  838.   IF cats=1 THEN IString=''
  839.             ELSE DO
  840.                   IString=i
  841.                   IF AddSaver="YES" THEN IString=IString||'.'
  842.                  END
  843.   IF AddSaver="YES" THEN IString=IString||CatForm
  844.   File=CatBase||IString
  845.  
  846.   result=SETCLIP('CatMakeCatName',File)
  847.   ADDRESS REXX "REXX:CatMakePreCatSave.rexx" File
  848.   File=GETCLIP('CatMakeCatName')
  849.   result=SETCLIP('CatMakeCatName')
  850.  
  851.   SAVE '"'||File||'"' CatMode
  852.   ADDRESS REXX "REXX:CatMakePostCatSave.rexx" File
  853.   zzz=WriteLn(CON,LUP||'                                                                       ')
  854.   zzz=WriteLn(CON,LUP||'  Deleting temporary files...')
  855.   ADDRESS COMMAND 'C:Delete >NIL: '||TDir||'CAT.#? QUIET'
  856.   if i<cats then zzz=WriteLn(CON,LUP||LUP||LUP)
  857.  END
  858. END
  859.  
  860. CatBasis=FILEPART(CatBase)
  861. IF CatBasis="" THEN CatBasis="_Catalog."
  862.  
  863. /* Save prefs */
  864. SaveData:
  865. IF OPEN(Prefs2,PrefsFile,"W") THEN DO
  866.  zzz=WriteLn(Prefs2,'Version V'||NeedVersion)
  867.  zzz=WriteLn(Prefs2,"  These are the current default settings for R.Adolph's CatalogGenerator")
  868.  zzz=WriteLn(Prefs2,'           written in ARexx for use with The Art Department Pro')
  869.  zzz=WriteLn(Prefs2,'')
  870.  zzz=WriteLn(Prefs2,'FontPrefs')
  871.  zzz=WriteLn(Prefs2,' TextRender     = '||TextRender)
  872.  zzz=WriteLn(Prefs2,' StripExtension = '||StripExt)
  873.  zzz=WriteLn(Prefs2,' Fontname       = '||FName)
  874.  zzz=WriteLn(Prefs2,' Fontsize       = '||FSize)
  875.  zzz=WriteLn(Prefs2,' Fonttype       = '||FType)
  876.  zzz=WriteLn(Prefs2,' TextR          = '||TextR)
  877.  zzz=WriteLn(Prefs2,' TextG          = '||TextG)
  878.  zzz=WriteLn(Prefs2,' TextB          = '||TextB)
  879.  zzz=WriteLn(Prefs2,' Size           = '||Sizing)
  880.  zzz=WriteLn(Prefs2,' Size_Fontname  = '||F2Name)
  881.  zzz=WriteLn(Prefs2,' Size_Fontsize  = '||F2Size)
  882.  zzz=WriteLn(Prefs2,' Size_Fonttype  = '||F2Type)
  883.  zzz=WriteLn(Prefs2,' SizeR          = '||SizeR)
  884.  zzz=WriteLn(Prefs2,' SizeG          = '||SizeG)
  885.  zzz=WriteLn(Prefs2,' SizeB          = '||SizeB)
  886.  zzz=WriteLn(Prefs2,' Seperate       = '||Seperate)
  887.  zzz=WriteLn(Prefs2,' Header         = '||AddHeader)
  888.  zzz=WriteLn(Prefs2,' HeaderFontname = '||HeaderName)
  889.  zzz=WriteLn(Prefs2,' HeaderFontsize = '||HeaderSize)
  890.  zzz=WriteLn(Prefs2,' HeaderFonttype = '||HeaderType)
  891.  zzz=WriteLn(Prefs2,' HeaderEmboss   = '||HeaderEmbossDirection)
  892.  zzz=WriteLn(Prefs2,' HeaderEmbAmnt  = '||HeaderEmbossAmount)
  893.  zzz=WriteLn(Prefs2,' HeaderTxtstyle = '||HeaderStyle)
  894.  zzz=WriteLn(Prefs2,' HeaderOffset   = '||HeaderOffset)
  895.  zzz=WriteLn(Prefs2,' CenterHeader   = '||CenterHeader)
  896.  zzz=WriteLn(Prefs2,' HeaderR        = '||HeaderR)
  897.  zzz=WriteLn(Prefs2,' HeaderG        = '||HeaderG)
  898.  zzz=WriteLn(Prefs2,' HeaderB        = '||HeaderB)
  899.  zzz=WriteLn(Prefs2,' HeaderString   = '||HeaderString)
  900.  zzz=WriteLn(Prefs2,'')
  901.  zzz=WriteLn(Prefs2,'Other')
  902.  zzz=WriteLn(Prefs2,' DirMode        = '||dirm)
  903.  zzz=WriteLn(Prefs2,' Sorting        = '||sorting)
  904.  zzz=WriteLn(Prefs2,' SaveOnError    = '||SaveOnError)
  905.  zzz=WriteLn(Prefs2,' ProceedOnError = '||ProcOnErr)
  906.  zzz=WriteLn(Prefs2,' ProceedErrStr  = '||ProcOnStr)
  907.  zzz=WriteLn(Prefs2,' StripMode      = '||CharMain||'+'||CharExtension)
  908.  zzz=WriteLn(Prefs2,' TempDir        = '||TDir)
  909.  IF invert=1 THEN Wildcard="~"||Wildcard
  910.  zzz=WriteLn(Prefs2,' Wildcard       = '||Wildcard)
  911.  zzz=WriteLn(Prefs2,' ExamineFiles   = '||ExamineFiles)
  912.  zzz=WriteLn(Prefs2,' ExamineNames   = '||ExamineNames)
  913.  zzz=WriteLn(Prefs2,' ScreenShuffle  = '||Shuffle)
  914.  zzz=WriteLn(Prefs2,'')
  915.  zzz=WriteLn(Prefs2,'Catalogprefs')
  916.  zzz=WriteLn(Prefs2,' CatalogBase    = '||CatBasis)
  917.  zzz=WriteLn(Prefs2,' SFormat-String = '||CatForm)
  918.  zzz=WriteLn(Prefs2,' AddSaverString = '||AddSaver)
  919.  zzz=WriteLn(Prefs2,' SaveMode       = '||CatMode)
  920.  zzz=WriteLn(Prefs2,' RawMode        = '||Mode)
  921.  zzz=WriteLn(Prefs2,' SizeMode       = '||SizeMode)
  922.  zzz=WriteLn(Prefs2,' Colors         = '||Cols)
  923.  zzz=WriteLn(Prefs2,' CatalogWidth   = '||PWI)
  924.  zzz=WriteLn(Prefs2,' CatalogHeight  = '||PHEBack)
  925.  zzz=WriteLn(Prefs2,' X-Tiles        = '||TWI)
  926.  zzz=WriteLn(Prefs2,' Y-Tiles        = '||THI)
  927.  zzz=WriteLn(Prefs2,' TileMode       = '||TMode)
  928.  zzz=WriteLn(Prefs2,' BorderR        = '||BorderR)
  929.  zzz=WriteLn(Prefs2,' BorderG        = '||BorderG)
  930.  zzz=WriteLn(Prefs2,' BorderB        = '||BorderB)
  931.  zzz=WriteLn(Prefs2,' Mixing         = '||MixFactor)
  932.  zzz=WriteLn(Prefs2,' MixR           = '||MixR)
  933.  zzz=WriteLn(Prefs2,' MixG           = '||MixG)
  934.  zzz=WriteLn(Prefs2,' MixB           = '||MixB)
  935.  zzz=WriteLn(Prefs2,' Background1R   = '||Back1R)
  936.  zzz=WriteLn(Prefs2,' Background1G   = '||Back1G)
  937.  zzz=WriteLn(Prefs2,' Background1B   = '||Back1B)
  938.  zzz=WriteLn(Prefs2,' Background2R   = '||Back2R)
  939.  zzz=WriteLn(Prefs2,' Background2G   = '||Back2G)
  940.  zzz=WriteLn(Prefs2,' Background2B   = '||Back2B)
  941.  zzz=WriteLn(Prefs2,' Background3R   = '||Back3R)
  942.  zzz=WriteLn(Prefs2,' Background3G   = '||Back3G)
  943.  zzz=WriteLn(Prefs2,' Background3B   = '||Back3B)
  944.  zzz=WriteLn(Prefs2,' Background4R   = '||Back4R)
  945.  zzz=WriteLn(Prefs2,' Background4G   = '||Back4G)
  946.  zzz=WriteLn(Prefs2,' Background4B   = '||Back4B)
  947.  zzz=WriteLn(Prefs2,' Back2Pos       = '||Back2Pos)
  948.  zzz=WriteLn(Prefs2,' BackDirection  = '||BackDir)
  949.  zzz=WriteLn(Prefs2,'')
  950.  zzz=WriteLn(Prefs2,'Rerenderprefs')
  951.  zzz=WriteLn(Prefs2,' MakeAlternate  = '||MakeAlt)
  952.  zzz=WriteLn(Prefs2,' RenderedColors = '||Colors)
  953.  zzz=WriteLn(Prefs2,' SFormat-String = '||SForm)
  954.  zzz=WriteLn(Prefs2,' SaveMode       = '||SMode)
  955.  zzz=WriteLn(Prefs2,' Extension      = '||Extension)
  956.  zzz=CLOSE(Prefs2)
  957. END
  958. LFORMAT OldLoader
  959. SFORMAT OldSaver
  960. IF DelList.0>0 THEN DO
  961.  DO i=1 TO DelList.0
  962.   ADDRESS COMMAND "Delete <>NIL:" DelList.i
  963.  END
  964. END
  965. IF PPList.0>0 THEN DO
  966.  DO i=1 TO PPList.0
  967.   ADDRESS COMMAND "PPack <>NIL:" PPList.i "nosuffix noper"
  968.  END
  969. END
  970. IF WindowOpen THEN zzz=Delay(150)
  971. IF WeLaunched=1 THEN "ADPRO_EXIT"
  972. EXIT
  973.  
  974. BREAK_C:                                  /* Interrupts */
  975.  CALL ERR('CatMake terminated by user')
  976.  IF WeLaunched=1 THEN "ADPRO_EXIT"
  977. EXIT
  978. BREAK_D:
  979.  CALL ERR('CatMake terminated by user')
  980.  IF WeLaunched=1 THEN "ADPRO_EXIT"
  981. EXIT
  982. SYNTAX:
  983.  CALL ERR('Syntax Error '||RC||' in line '||SIGL||' !'||NL||ERRORTEXT(RC))
  984.  IF WeLaunched=1 THEN "ADPRO_EXIT"
  985. EXIT
  986.  
  987. ERR:
  988. PARSE ARG String
  989.   IF String~='' THEN OKAY1 String
  990.   IF SaveOnError='YES' THEN SIGNAL SaveData
  991.   ADDRESS COMMAND 'C:Delete >NIL: '||TDir||'CAT.#?'
  992.   IF WeLaunched=1 THEN "ADPRO_EXIT"
  993.   EXIT 20
  994. RETURN
  995.  
  996. QueryTiling:
  997.  GETNUMBER "'X-Tiling? "||fl.count||" pics'" 3 1 64
  998.  if rc~=0 then do
  999.   exit 20
  1000.  end
  1001.  TWI=ADPro_Result
  1002.  GETNUMBER "'Y-Tiling? "||fl.count||" pics'" 3 1 64
  1003.  if rc~=0 then do
  1004.   exit 20
  1005.  end
  1006.  THI=ADPro_Result
  1007. RETURN
  1008.  
  1009. UnPack: PROCEDURE EXPOSE DelList. PPList. TDir
  1010. PARSE ARG Mode,File,Path
  1011.  SELECT
  1012.   WHEN Mode="LHA" THEN DO                 /* Extract first file form archive */
  1013.    SAY "Unpacking LHA : "||File
  1014.    ADDRESS COMMAND "LHA >"||TDir||"CatMakeTemp lq "||File
  1015.    IF rc~=0 THEN RETURN File
  1016.    IF ~OPEN(In,TDir||"CatMakeTemp","R") THEN RETURN File
  1017.    DO i=1 TO 4
  1018.     erg=READLN(In)
  1019.    END
  1020.    rc=CLOSE(In)
  1021.    ADDRESS COMMAND "Delete <>NIL: "||TDir||"CatMakeTemp"
  1022.    ADDRESS COMMAND "LHA -q e" File erg Path
  1023.    File=erg
  1024.    i=DelList.0+1
  1025.    DelList.i=Path||File
  1026.    DelList.0=i
  1027.   END
  1028.   WHEN Mode="PP" THEN DO                  /* Decrunch PP-File */
  1029.    SAY "Unpacking PP  : "||File
  1030.    ADDRESS COMMAND "ppack <>NIL:" File "decrunch noper"
  1031.    IF rc~=0 THEN RETURN File
  1032.    i=PPList.0+1
  1033.    PPList.i=File
  1034.    PPList.0=i
  1035.   END
  1036.   OTHERWISE NOP
  1037.  END
  1038. RETURN File
  1039.  
  1040. ExamineFile: PROCEDURE
  1041. PARSE ARG Filename
  1042.  IF ~OPEN(File,Filename,"R") THEN RETURN 0
  1043.  erg=READCH(File,5)
  1044.  SELECT
  1045.   WHEN RIGHT(erg,3)="-lh" THEN erg="LHA"
  1046.   WHEN erg=X2C("5050323009") THEN erg="PP"
  1047.   OTHERWISE NOP
  1048.  END
  1049.  Filename=CLOSE(File)
  1050. RETURN Erg
  1051.  
  1052. SetDefs:
  1053.  PrefsVersion=NeedVersion
  1054.  TextRender="YES"
  1055.  StripExt="YES"
  1056.  FName="Helvetica"
  1057.  FSize=11
  1058.  FType="BITMAPPED"
  1059.  TextR=255
  1060.  TextG=255
  1061.  TextB=155
  1062.  Sizing="RIGHT"
  1063.  F2Name="Helvetica"
  1064.  F2Size=9
  1065.  F2Type="BITMAPPED"
  1066.  SizeR=200
  1067.  SizeG=200
  1068.  SizeB=200
  1069.  Seperate="YES"
  1070.  AddHeader="YES"
  1071.  HeaderName="Helvetica"
  1072.  HeaderSize=13
  1073.  HeaderType="BITMAPPED"
  1074.  HeaderEmbossDirection="OUT"
  1075.  HeaderEmbossAmount=100
  1076.  HeaderStyle=0
  1077.  HeaderOffset=1
  1078.  CenterHeader="YES"
  1079.  HeaderR=175
  1080.  HeaderG=175
  1081.  HeaderB=160
  1082.  HeaderString="Created with CatMake, © by R.Adolph"
  1083.  IF ~Arguments THEN dirm="WHOLE"
  1084.  Sorting="ALPHA"
  1085.  SaveOnError="YES"
  1086.  ProcOnErr="YES"
  1087.  ProcOnStr="Corrupted!"
  1088.  CharStripping="8+3"
  1089.  TDir="T:"
  1090.  WildCard="*"
  1091.  ExamineFiles="NO"
  1092.  ExamineNames="NO"
  1093.  Shuffle="NO"
  1094.  CatBasis="_Catalog."
  1095.  CatForm="IFF"
  1096.  AddSaver="YES"
  1097.  CatMode="IMAGE"
  1098.  Mode="COLOR"
  1099.  SizeMode="RELATIVE"
  1100.  Cols=256
  1101.  PWI=640
  1102.  PHE=480
  1103.  PHEBack=480
  1104.  TWI=4
  1105.  THI=4
  1106.  TMode="3x3"
  1107.  BorderR=255
  1108.  BorderG=255
  1109.  BorderB=255
  1110.  MixFactor=40
  1111.  MixR=0
  1112.  MixG=0
  1113.  MixB=0
  1114.  Back1R=0
  1115.  Back1G=0
  1116.  Back1B=0
  1117.  Back2R=0
  1118.  Back2G=0
  1119.  Back2B=0
  1120.  Back3R=0
  1121.  Back3G=0
  1122.  Back3B=0
  1123.  Back4R=0
  1124.  Back4G=0
  1125.  Back4B=0
  1126.  Back2Pos=50
  1127.  BackDir="S"
  1128.  MakeAlt="NO"
  1129.  Colors=256
  1130.  SForm="JPEG"
  1131.  SMode="RAW"
  1132.  Extension="jpg"
  1133. CALL Main
  1134.  
  1135. AskSettings:
  1136.  /* Dirscanning or (Multi-)Select ? */
  1137.  IF dirm="WHOLE" THEN DO
  1138.                        OKS="Manual"
  1139.                        OKS2="MULTI"
  1140.                        CANS="Whole"
  1141.                        CANS2="WHOLE"
  1142.                       END
  1143.                  ELSE DO
  1144.                        OKS="Whole"
  1145.                        OKS2="WHOLE"
  1146.                        CANS="Manual"
  1147.                        CANS2="MULTI"
  1148.                       END
  1149.  OKAY2 '"   Do you want to handle a'||NL||'      whole directory?'||NL||'OK='||OKS||'      Cancel='||CANS||'"'
  1150.  if rc=0 then dirm=CANS2
  1151.          else dirm=OKS2
  1152.  
  1153.  /* Save-Format for catalogs */
  1154.  IF Up2Date THEN DO
  1155.   ListView '"Saver for Catalogs ?"' 10 ITEMS '"'||CatForm||'" '||SaverList
  1156.   IF rc>1 THEN CALL ERR('')
  1157.   PARSE VAR adpro_result '"' CatForm '"' .  /* Get selected entry */
  1158.  END
  1159.  ELSE DO
  1160.   GETSTRING '"Catalog SFORMAT-String ?"' CatForm
  1161.            if rc~=0 then CALL ERR('')
  1162.            CatForm=ADPro_Result
  1163.  END
  1164.  
  1165.  /* Check if the user actually may choose between RAW & IMAGE or not */
  1166.  CatModeBak=CatMode
  1167.  CatMode=''
  1168.  IF INDEX('GIF',UPPER(CatForm))~=0 THEN CatMode='IMAGE'
  1169.  IF INDEX('JPEG QRT RENDITION SCULPT',UPPER(CatForm))~=0 THEN CatMode='RAW'
  1170.  
  1171.  /* If user may decide,then ask him now */
  1172.  IF CatMode='' THEN DO
  1173.  IF CatModeBak="RAW" THEN DO
  1174.                            OKS="IMAGE"
  1175.                            OKS2="IMAGE"
  1176.                            CANS="RAW"
  1177.                            CANS2="RAW"
  1178.                           END
  1179.                      ELSE DO
  1180.                            OKS="RAW "
  1181.                            OKS2="RAW"
  1182.                            CANS="IMAGE"
  1183.                            CANS2="IMAGE"
  1184.                           END
  1185.   OKAY2 'What type of File is that type ?'||NL||'OK='||OKS||'     or      Cancel='||CANS
  1186.   IF rc=0 THEN CatMode=CANS2
  1187.           ELSE CatMode=OKS2
  1188.  END
  1189.  
  1190.  /* Scaling-Mode */
  1191.  IF SizeMode="RELATIVE" THEN DO
  1192.                            OKS="Fit   "
  1193.                            OKS2="ABSOLUTE"
  1194.                            CANS="Aspect"
  1195.                            CANS2="RELATIVE"
  1196.                           END
  1197.                      ELSE DO
  1198.                            OKS="Aspect"
  1199.                            OKS2="RELATIVE"
  1200.                            CANS="Fit"
  1201.                            CANS2="ABSOLUTE"
  1202.                           END
  1203.  OKAY2 '" Shall the images be sized to'||NL||'fit each tile completely or to'||NL||'  be sized aspect-correctly?'||NL||'OK='||OKS||'    or  Cancel='||CANS||'"'
  1204.  IF rc=0 THEN SizeMode=CANS2
  1205.          ELSE SizeMode=OKS2
  1206.  
  1207.  /* Size of catalogs */
  1208.  GETNUMBER '"Width of Catalogs ?"' PWI 20 9999
  1209.           IF rc~=0 then CALL ERR('')
  1210.           PWI=ADPro_Result
  1211.  GETNUMBER '"Height of Catalogs ?"' PHE 20 9999
  1212.           IF rc~=0 THEN CALL ERR('')
  1213.           PHE=ADPro_Result
  1214.           PHEBack=PHE
  1215.  
  1216.  /* Color-Mode */
  1217.  IF mode="COLOR" THEN DO
  1218.                        OKS="BW   "
  1219.                        OKS2="BLACKWHITE"
  1220.                        CANS="Color"
  1221.                        CANS2="COLOR"
  1222.                       END
  1223.                  ELSE DO
  1224.                        OKS="Color"
  1225.                        OKS2="COLOR"
  1226.                        CANS="BW"
  1227.                        CANS2="BLACKWHITE"
  1228.                       END
  1229.  OKAY2 'Make Color or Black&White'||NL||'    Catalog-Picture?'||NL||'OK='||OKS||'        Cancel='||CANS
  1230.  IF rc=0 THEN mode=CANS2
  1231.          ELSE mode=OKS2
  1232.  
  1233.  /* If not truecolor,then ask now for number of colors/color-mode */
  1234.  IF CatMode='IMAGE' THEN DO
  1235.   IF Up2Date THEN DO
  1236.    ListView '"Number of Colors"' 10 ITEMS '"'||Cols||'" '||ColorList
  1237.    IF rc>1 THEN CALL ERR('')
  1238.    PARSE VAR adpro_result '"' Cols '"' .
  1239.   END
  1240.   ELSE DO
  1241.    GETSTRING "'How many Colors? (2-256,HAM8,CUST...)'" Cols
  1242.    IF rc~=0 THEN CALL ERR('')
  1243.    Cols=ADPro_Result
  1244.   END
  1245.  END
  1246.  ELSE DO
  1247.   IF mode="BLACKWHITE" THEN Cols=8BitGrey
  1248.                        ELSE Cols=24Bit
  1249.  END
  1250.  
  1251.  /* Headerstring-Queries */
  1252.  OKAY2 'Add a headerstring to each catalog?'
  1253.  IF rc=0 THEN AddHeader='NO'
  1254.          ELSE DO
  1255.   AddHeader='YES'
  1256.   IF LEFT(HeaderString,1)='"' THEN Lef=''
  1257.                               ELSE Lef='"'
  1258.   IF RIGHT(HeaderString,1)='"' THEN Rig=''
  1259.                                ELSE Rig='"'
  1260.   GETSTRING '"Enter headerstring"' Lef||HeaderString||Rig
  1261.   IF rc~=0 THEN CALL ERR('')
  1262.   HeaderString=ADPro_Result
  1263.   OKAY2 'Center headerstring horizontally?'
  1264.   IF rc=0 THEN DO
  1265.                 CenterHeader='NO'
  1266.                 GETNUMBER '"X-Offset in Pixels?"' 1 1 9999
  1267.                           IF rc~=0 then CALL ERR('')
  1268.                           HeaderOffset=ADPro_Result
  1269.                END
  1270.           ELSE CenterHeader='YES'
  1271.  END
  1272.  
  1273.  /* (Re-)Render ? */
  1274.  IF MakeAlt="NO" THEN DO
  1275.                        OKS="Yes"
  1276.                        OKS2="YES"
  1277.                        CANS="No"
  1278.                        CANS2="NO"
  1279.                       END
  1280.                  ELSE DO
  1281.                        OKS="No "
  1282.                        OKS2="NO"
  1283.                        CANS="Yes"
  1284.                        CANS2="YES"
  1285.                       END
  1286.  OKAY2 'Do you want to also save'||NL||' as alternate Images ?'||NL||'(Under diff. filenames)'||NL||'OK='||OKS||'         Cancel='||CANS
  1287.  IF rc=0 THEN MakeAlt=CANS2
  1288.          ELSE DO
  1289.           /* Yes,please...*/
  1290.           MakeAlt=OKS2
  1291.  
  1292.           /* Ask several things...as above */
  1293.           IF Extension~=SForm THEN FFlag=1
  1294.                               ELSE FFlag=0
  1295.  
  1296.           IF Up2Date THEN DO
  1297.            ListView '"Saver for Images?"' 10 ITEMS '"'||SForm||'" '||SaverList
  1298.            IF rc>1 THEN CALL ERR('')
  1299.            PARSE VAR adpro_result '"' SForm '"' .
  1300.           END
  1301.           ELSE DO
  1302.            GETSTRING '"Catalog SFORMAT-String ?"' SForm
  1303.            IF rc~=0 THEN CALL ERR('')
  1304.            SForm=ADPro_Result
  1305.           END
  1306.  
  1307.           SModeBak=SMode
  1308.           SMode=''
  1309.           IF INDEX('GIF',UPPER(SForm))~=0 THEN SMode='IMAGE'
  1310.           IF INDEX('JPEG QRT RENDITION SCULPT',UPPER(SForm))~=0 THEN SMode='RAW'
  1311.  
  1312.           IF SMode='' THEN DO
  1313.            IF SModeBak="RAW" THEN DO
  1314.                                    OKS="IMAGE"
  1315.                                    OKS2="IMAGE"
  1316.                                    CANS="RAW"
  1317.                                    CANS2="RAW"
  1318.                                   END
  1319.                              ELSE DO
  1320.                                    OKS="RAW "
  1321.                                    OKS2="RAW"
  1322.                                    CANS="IMAGE"
  1323.                                    CANS2="IMAGE"
  1324.                                   END
  1325.            OKAY2 'What type of File is that type ?'||NL||'OK='||OKS||'     or      Cancel='||CANS
  1326.            IF rc=0 THEN SMode=CANS2
  1327.                    ELSE SMode=OKS2
  1328.           END
  1329.  
  1330.           IF SMode="IMAGE" THEN DO
  1331.            IF Up2Date THEN DO
  1332.             ListView '"Number of Colors"' 10 ITEMS '"'||Colors||'" '||ColorList
  1333.             IF rc>1 THEN CALL ERR('')
  1334.             PARSE VAR adpro_result '"' Colors '"' .
  1335.            END
  1336.            ELSE DO
  1337.             GETSTRING "'How many Colors? (2-256,HAM8,CUST...)'" Colors
  1338.             IF rc~=0 THEN CALL ERR('')
  1339.             Colors=ADPro_Result
  1340.            END
  1341.           END
  1342.           ELSE Colors=24Bit
  1343.  
  1344.           IF FFlag=1 THEN FFlag=Extension
  1345.                      ELSE FFlag=SForm
  1346.           GETSTRING '"Extension WITHOUT >.< ?"' FFlag
  1347.           IF rc~=0 THEN CALL ERR('')
  1348.           Extension=ADPro_Result
  1349.          END
  1350. RETURN
  1351.